[INFO] cloning repository https://github.com/zcfabra/c-compiler
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zcfabra/c-compiler" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzcfabra%2Fc-compiler", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzcfabra%2Fc-compiler'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d32913d2c915602e6f2be42b2fc324adf781d2a1
[INFO] checking zcfabra/c-compiler against try#a2a6e871b05c7b8ecc9a3c8a20db1f39e995e399 for pr-145770
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzcfabra%2Fc-compiler" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/zcfabra/c-compiler
[INFO] finished tweaking git repo https://github.com/zcfabra/c-compiler
[INFO] tweaked toml for git repo https://github.com/zcfabra/c-compiler written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/zcfabra/c-compiler on toolchain a2a6e871b05c7b8ecc9a3c8a20db1f39e995e399
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a2a6e871b05c7b8ecc9a3c8a20db1f39e995e399" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/zcfabra/c-compiler already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a2a6e871b05c7b8ecc9a3c8a20db1f39e995e399" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+a2a6e871b05c7b8ecc9a3c8a20db1f39e995e399" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 872687bb1b8fe37dd32bffd4d0f5776f4bb92c63a240372257b255fa5a4bca15
[INFO] running `Command { std: "docker" "start" "-a" "872687bb1b8fe37dd32bffd4d0f5776f4bb92c63a240372257b255fa5a4bca15", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "872687bb1b8fe37dd32bffd4d0f5776f4bb92c63a240372257b255fa5a4bca15", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "872687bb1b8fe37dd32bffd4d0f5776f4bb92c63a240372257b255fa5a4bca15", kill_on_drop: false }`
[INFO] [stdout] 872687bb1b8fe37dd32bffd4d0f5776f4bb92c63a240372257b255fa5a4bca15
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+a2a6e871b05c7b8ecc9a3c8a20db1f39e995e399" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cc96c1b0c78d715aca9fd35b8663567ab0996b1961f66a9b7a8da5e461a33534
[INFO] running `Command { std: "docker" "start" "-a" "cc96c1b0c78d715aca9fd35b8663567ab0996b1961f66a9b7a8da5e461a33534", kill_on_drop: false }`
[INFO] [stderr]     Checking app v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]  --> src/ast.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{write, Display};
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Termination`
[INFO] [stdout]  --> src/parser.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::process::Termination;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/parser.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |         self, AssignStmt, AstNode, BinOp, Expr, FnDef, Program, ReturnStmt,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/lexer.rs:1:20
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::token::{self, Token};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ADD_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     ADD_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `AddEq`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SUB_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     SUB_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `SubEq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NOT_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     NOT_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `NotEq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MUL_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     MUL_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `MulEq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DIV_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     DIV_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `DivEq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File`, `OpenOptions`, and `Write`
[INFO] [stdout]   --> src/main.rs:9:16
[INFO] [stdout]    |
[INFO] [stdout] 9  |     fs::{self, File, OpenOptions},
[INFO] [stdout]    |                ^^^^  ^^^^^^^^^^^
[INFO] [stdout] 10 |     io::{Read, Write},
[INFO] [stdout]    |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]  --> src/ast.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{write, Display};
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Termination`
[INFO] [stdout]  --> src/parser.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::process::Termination;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/parser.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |         self, AssignStmt, AstNode, BinOp, Expr, FnDef, Program, ReturnStmt,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/lexer.rs:1:20
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::token::{self, Token};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ADD_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     ADD_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `AddEq`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SUB_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     SUB_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `SubEq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NOT_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     NOT_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `NotEq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MUL_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     MUL_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `MulEq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DIV_EQ` should have an upper camel case name
[INFO] [stdout]   --> src/token.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     DIV_EQ,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to upper camel case: `DivEq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File`, `OpenOptions`, and `Write`
[INFO] [stdout]   --> src/main.rs:9:16
[INFO] [stdout]    |
[INFO] [stdout] 9  |     fs::{self, File, OpenOptions},
[INFO] [stdout]    |                ^^^^  ^^^^^^^^^^^
[INFO] [stdout] 10 |     io::{Read, Write},
[INFO] [stdout]    |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lexer.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut lx = Lexer::new(s.char_indices().map(|(i, c)| (i as u32, c)));
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lexer.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut lx = Lexer::new(s.char_indices().map(|(i, c)| (i as u32, c)));
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/ast.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 159 |             _ => write!(f, "NOT IMPLEMENTED"),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/ast.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             AstNode::Expr(expr) => write!(f, "{}", expr),
[INFO] [stdout]     |             ------------------- matches some of the same values
[INFO] [stdout] 157 |             AstNode::Program(prg) => write!(f, "{}", prg),
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] 158 |             AstNode::Statement(stmt) => write!(f, "{}", stmt),
[INFO] [stdout]     |             ------------------------ matches some of the same values
[INFO] [stdout] 159 |             _ => write!(f, "NOT IMPLEMENTED"),
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]    --> src/parser.rs:209:14
[INFO] [stdout]     |
[INFO] [stdout] 209 |             (a, b) => {
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> src/parser.rs:209:17
[INFO] [stdout]     |
[INFO] [stdout] 209 |             (a, b) => {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ix`
[INFO] [stdout]    --> src/lexer.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |         ix: u32,
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_ix`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/token.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let mut repr;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `InvalidIdentifierReason` is more private than the item `LexError::InvalidIdentifier::0`
[INFO] [stdout]   --> src/lexer.rs:21:23
[INFO] [stdout]    |
[INFO] [stdout] 21 |     InvalidIdentifier((String, InvalidIdentifierReason)),
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `LexError::InvalidIdentifier::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `InvalidIdentifierReason` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/lexer.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | enum InvalidIdentifierReason {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `InvalidIdentifierReason` is more private than the item `LexError::InvalidNumeric::0`
[INFO] [stdout]   --> src/lexer.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 |     InvalidNumeric((String, InvalidIdentifierReason)),
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `LexError::InvalidNumeric::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `InvalidIdentifierReason` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/lexer.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | enum InvalidIdentifierReason {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypedIdent` is never constructed
[INFO] [stdout]   --> src/ast.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct TypedIdent {}
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Conditional` is never constructed
[INFO] [stdout]    --> src/ast.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub enum Statement {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] 106 |     Assign(AssignStmt),
[INFO] [stdout] 107 |     Conditional(ConditionalStmt),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Statement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Statement` and `Expr` are never constructed
[INFO] [stdout]    --> src/ast.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub enum AstNode {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] 148 |     Program(Program),
[INFO] [stdout] 149 |     Statement(Statement),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 150 |     Expr(Expr),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AstNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_lexer` is never used
[INFO] [stdout]   --> src/lexer.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn make_lexer<'a>(
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `is_curr_char_numeric` is never used
[INFO] [stdout]    --> src/lexer.rs:267:12
[INFO] [stdout]     |
[INFO] [stdout] 75  | / impl<I> Lexer<I>
[INFO] [stdout] 76  | | where
[INFO] [stdout] 77  | |     I: Iterator<Item = IndexedCh>,
[INFO] [stdout]     | |__________________________________- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 267 |       pub fn is_curr_char_numeric(ch: char) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `POINTER` is never constructed
[INFO] [stdout]   --> src/token.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub enum Token {
[INFO] [stdout]    |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 34 |     POINTER,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Token` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `make_ident` is never used
[INFO] [stdout]   --> src/token.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 78 |     pub fn make_ident(s: String) -> Token {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/ast.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 159 |             _ => write!(f, "NOT IMPLEMENTED"),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/ast.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             AstNode::Expr(expr) => write!(f, "{}", expr),
[INFO] [stdout]     |             ------------------- matches some of the same values
[INFO] [stdout] 157 |             AstNode::Program(prg) => write!(f, "{}", prg),
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] 158 |             AstNode::Statement(stmt) => write!(f, "{}", stmt),
[INFO] [stdout]     |             ------------------------ matches some of the same values
[INFO] [stdout] 159 |             _ => write!(f, "NOT IMPLEMENTED"),
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]    --> src/parser.rs:209:14
[INFO] [stdout]     |
[INFO] [stdout] 209 |             (a, b) => {
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> src/parser.rs:209:17
[INFO] [stdout]     |
[INFO] [stdout] 209 |             (a, b) => {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ix`
[INFO] [stdout]    --> src/lexer.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |         ix: u32,
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_ix`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/token.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let mut repr;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `InvalidIdentifierReason` is more private than the item `LexError::InvalidIdentifier::0`
[INFO] [stdout]   --> src/lexer.rs:21:23
[INFO] [stdout]    |
[INFO] [stdout] 21 |     InvalidIdentifier((String, InvalidIdentifierReason)),
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `LexError::InvalidIdentifier::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `InvalidIdentifierReason` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/lexer.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | enum InvalidIdentifierReason {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `InvalidIdentifierReason` is more private than the item `LexError::InvalidNumeric::0`
[INFO] [stdout]   --> src/lexer.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 |     InvalidNumeric((String, InvalidIdentifierReason)),
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `LexError::InvalidNumeric::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `InvalidIdentifierReason` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/lexer.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | enum InvalidIdentifierReason {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypedIdent` is never constructed
[INFO] [stdout]   --> src/ast.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct TypedIdent {}
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Conditional` is never constructed
[INFO] [stdout]    --> src/ast.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub enum Statement {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] 106 |     Assign(AssignStmt),
[INFO] [stdout] 107 |     Conditional(ConditionalStmt),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Statement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Statement` and `Expr` are never constructed
[INFO] [stdout]    --> src/ast.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub enum AstNode {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] 148 |     Program(Program),
[INFO] [stdout] 149 |     Statement(Statement),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 150 |     Expr(Expr),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AstNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `is_curr_char_numeric` is never used
[INFO] [stdout]    --> src/lexer.rs:267:12
[INFO] [stdout]     |
[INFO] [stdout] 75  | / impl<I> Lexer<I>
[INFO] [stdout] 76  | | where
[INFO] [stdout] 77  | |     I: Iterator<Item = IndexedCh>,
[INFO] [stdout]     | |__________________________________- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 267 |       pub fn is_curr_char_numeric(ch: char) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `POINTER` is never constructed
[INFO] [stdout]   --> src/token.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub enum Token {
[INFO] [stdout]    |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 34 |     POINTER,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Token` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `make_ident` is never used
[INFO] [stdout]   --> src/token.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 78 |     pub fn make_ident(s: String) -> Token {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.63s
[INFO] running `Command { std: "docker" "inspect" "cc96c1b0c78d715aca9fd35b8663567ab0996b1961f66a9b7a8da5e461a33534", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cc96c1b0c78d715aca9fd35b8663567ab0996b1961f66a9b7a8da5e461a33534", kill_on_drop: false }`
[INFO] [stdout] cc96c1b0c78d715aca9fd35b8663567ab0996b1961f66a9b7a8da5e461a33534
